﻿#pragma once
#ifndef HerminteCurve_hpp
#define HerminteCurve_hpp

#include<vector>
#include"../../TesMath/TesVector3.h"
#include"../../TesMath/TesInterpolation.h"
#include"HermiteFrag.hpp"


namespace MMF { namespace BSpline {

struct HerminteCurve : public TesInterpolation
{
    std::vector<HermiteFrag> mFragments;    ///< 子线段
    size_t mFindIdx;                        ///< 记录下一次查找的子线段的下标
    float mLastPos;                         ///< 上一次取点的坐标

    HerminteCurve();

    //设置点和速度
    void SetPointsAndVelocitys(const std::vector<TesVector3>& points, const std::vector<TesVector3>& velocitys);

    //曲线上获取一个点
    TesVector3 GetPoint(float distance);

    //曲线结束了
    bool IsEnd();

    //总长度
    float Length();

    //重置
    void Reset();
};

}}


#endif